This program uses Z80 machine code working on any Amstrad CPC machine.

Given that the CPC doesn't have a proper text mode and a quite wicked way of
coding the screen contents in memory, I decided to try to find a fast and small
solution without using any of the firmware routines for text output. Going from
top to bottom, the program calculates the offset for the next character line
instead of the absolute y coordinates for each line.

This also allowed me to position the Christmas tree perfectly centered – which
isn't possible in text mode with an even amount of columns (40 or 80). In my
solution, the middle line is placed exactly between the 20th and 21st column.

Also, I wanted to design a relocatable routine with only relative jumps and
without any data tables in memory. That resulted in one big loop, which
calculates all the values for the lines on the fly (according to the logic of
the model: 3 sections with 4 lines each, line growth is increased for each
section, etc.). In the end, this loop is additionally repeated with the values
for the two trunk lines.

And, last but not least, I wanted to improve my skills in the usage of the Z80's
second register set. That resulted in a quite fast routine. The whole tree is
drawn in just 5156 nops = about 5 milliseconds.

Following the beloved tradition of type-in programs, the Basic loader reads the
opcodes from DATA-lines instead of loading a .BIN-file. As proof of concept that
the routine is relocatable, the starting adress for the code is chosen as random
number between &4000 and &7F00.
